package com.broada.apm.indicator.api;

import java.util.List;

import com.broada.apm.model.ApplicationSystem;

public interface ApplicationService {
	
	/**
	 * 添加应用系统
	 * @param application
	 */
	public void addApplication(ApplicationSystem application);
	
	/**
	 * 更新应用系统
	 * @param application
	 */
	public void updateApplication(ApplicationSystem application);
	
	/**
	 * 更新应用系统及关系
	 * @param application
	 */
	public void updateApplicationWithRelation(ApplicationSystem application);
	
	/**
	 * 删除应用系统
	 * @param application
	 */
	public void deleteApplication(ApplicationSystem application);
	
	/**
	 * 查询所有应用系统
	 * @return
	 */
	public List<ApplicationSystem> getAllApplications();
	
	/**
	 * 根据应用系统id查询
	 * @param appId
	 * @return
	 */
	public ApplicationSystem getApplicationById(String appId);

	/**
	 * 查询应用系统关联服务节点和节点关系
	 * @param appId
	 * @return
	 */
	public ApplicationSystem getApplicationWithServiceAndRelById(String appId);

	/**
	 * 根据应用系统名称查询应用系统
	 */
	public ApplicationSystem getApplicationByAppName(String appName);

	/**
	 * 根据条件查询应用系统
	 * @param application
	 * @return
	 */
	public List<com.broada.apm.model.ApplicationSystem> getApplicationByCondition(
			com.broada.apm.model.ApplicationSystem application);

	/**
	 * 保存交易总览页面上所有的应用系统
	 * @param appIds
	 */
	public void saveAppsInOverview(List<String> appIds);

	public List<com.broada.apm.model.ApplicationSystem> queryApplicationsByNames(String[] appNames);

	public List<com.broada.apm.model.ApplicationSystem> queryApplicationsByIds(String[] appIds);
}
